情報分析・管理論 第8回
データマイニング応用:アンサンブル学習
復習)教師あり学習:クラス分類
$ exp(- gamma {|| \nu_i - \nu_j||}^2)なら、γがパラメータ
ソフトマージン:ペナルティを決めるC
これらのパラメータの最適な値は?
たとえばγとCがパラメータで、取りうる範囲が [0.1, 0.5] なら
適当な間隔(ここでは0.1)で表(グリッド)を作り
テストデータをk=用いて精度を算出し
最も良いところを選ぶ
もとのデータ集合をn等分
n - 1個の秋雨号を訓練データとしてSVMの分離超平面作成
1個の集合をテスト用にして誤り率を調べる
これをn回繰り返し、最後に全体の誤差を計算
たとえば誤り率の平均
復習)グリッドサーチ+交差検証
おおざっぱなグリッドサーチ範囲決定
その範囲に対して細かいグリッドを作成し、それぞれの値に対してn群交差検証
最も良いものを選ぶ
本日の内容
モデルの柔軟さと解釈
クラス分類における予測制度の評価
クラス分類におけるアンサンブル学習(集合学習)
モデルの柔軟性を高めると、過学習の問題が起こりやすくなる
最小二乗法(Ordinary Least Squares)による曲線フィッティング
各データ(点)とモデルの値の誤差の2上の総和が最小になるように係数を決定
柔軟性が高いモデルが過学習すると、ノイズまで追いにいっちゃう
モデルの柔軟性と解釈しやすさにおけるトレードオフ
解釈しやすい、モデル柔軟性低い
最小二乗法を起点とする手法
最小二乗法による線形回帰
→ 一般化加法モデル(非線形への拡張)
解釈しにくい、モデル柔軟性高い
クラス分類を起点とする手法
決定木
→ バギング、ランダムフォレスト、ブースティング
サポートベクターマシン
柔軟性が高い
モデルの次数:高い
モデルの次元:高い
解釈しやすい
その逆
次数
各項の変数の数
モデルの柔軟さとか学習の関係に関する視覚表現
U字型
平均二乗誤差
バイアス-バリアンス分類からの過学習の解釈
平均二乗誤差(MSE)の分解
バリアンスの現象に対して…
クラス分類における代表的な予測評価指標
分類器あるいは診断テストを用いた際に起こりうる結果
混同行列
分類と診断テストの精度評価のための指標
偽陽性率
FP/N
真陽性率
TP/P
陽性的中率
TP/P*
陰性的中率
TN/N*
分類モデルの評価指標
正解率
(TP + TN)/(TP + TN + FP + FN)
適合率
TP/(TP + FP)
再現率
TP/(TP + FN)
F1スコア
2x適合率x再現率/(適合率 + 再現率)
2値のクラス分類における誤分類:具体的事例からの解釈(1)
事例の設定(2値のクラス分類)
クラス
あるクレジットカード会社において顧客が債務不履行(default: 債務を果たせなくなること)に陥ってしまうかどうかの分類
説明変数
学生かどうか、クレジットカードの債務残高(balance: 月ごとの…)
RのISLRパッケージから利用可能
(2)
2値のクラス分類において想定される「2種類のご分類」
偽陽性(FN)
債務不履行になる顧客を、債務不履行にならない(FP)と予測してしまうご分類
偽陰性(FP)
(3)
偽陰性を避けたい
偽陽性はそれほど問題にならない
デフォルト判定の閾値をゆるくしてみた
偽陰性を避けられた
どのようにしてベストな分類機を選べばよいか?
ROC曲線による分類器の性能評価
ROC Curve
クラス分類における事後確率のポジティブ判定の閾値(threshold)を変化させた際の、偽陽性率(FP/N)と信用成立(TP/P)をプロットした曲線
図左下から図右上へ向かう曲線は、事後確率のポジティブ判定の閾値が次第に緩まり、FP/N or TP/P の判定が増加していく割合を表している
https://gyazo.com/cb668d2045cc1d5adf82ebbfe2a9d10e
理想的なROC曲線
左下を沿うように描かれる
閾値全体で、低い偽陽性率、かつ高い真陽性率を実現
AUC: area under the curve 理想的なROC曲線:AUC = 1
任意の分類器の、すべての閾値による全体的な性能を評価
クラス分類におけるアンサンブル学習(集合学習)
分岐が多すぎると理解しにくい、過学習問題が生じる(予測精度が落ちることがある)
参考)決定木の分岐が多すぎる場合:木の刈り込み(Tree Pruning) 木のサイズが増加する際に、テスト後分類率が増減する可能性がある
→まず大きな木T0を成長させてから、木を刈り込み部分木Tを得る
すべての部分木Tに対して、テスト後分類率を計算するのは木のサイズが大きい場合、計算量の観点で困難
→ 検証する部分木の数を制限する
→ 木のサイズをコスト基準として考慮した「刈り込み法」(木を刈り込む手法の一つ) 任意のパラメータα(たとえば、0.001、0.002、0.003等)で、以下のコスト基準が最小となる部分木$ T \subset T_0を選択
各αに対応するコスト基準が最小になる部分木Tに対して、K分割交差検証を用いて後分類率を得る
交差検証後分類率が最小となるαに対応する部分木を得る(剪定終了)
取得した部分木におけるテスト語分類率を得る
復習)決定木の長所・短所
長所
結果が人間の目で見てわかりやすい
具体的で単純な「ルール」が得られる
確率的な解釈もできる
短所
データが少し変わっただけで木構造・判別ルールが大きく変わってしまう
ロバストさに欠ける
説明変数が多くなると複雑になる
ensemble learning
ひとつの訓練データから得られる複数の訓練データを用いた予測を行い、それらを総合して最終的な予測結果を出す
たとえば、クラス分類の場合は多数決で最終的な予測を決定する
訓練データから改めて標本(サンプル)を抽出し、関心のあるモデルに当てはめる
交差検証
ブートストラップ
bootstrap
交差検証
訓練データのうちいくつかを取り出し、検証データとして活用
テスト誤差として、回帰においてはMSE、分類においては誤分類率を使用 観測データを、ランダムに訓練データと検証データに2分割する
最初のグループを検証に使い、残りの(k-1)を使ってグループに当てはめる
n個のデータを持つ元のデータセットZから、重複を許して無作為に抽出したn個のデータを持つブートストラップ標本を生成
以上をB回繰り返し、B個のブートストラップ標本を新たに得る
B個のブートストラップ標本それぞれから検証する推定値を得る
アンサンブル学習のアプローチ方法
バギング
バリアンスを減少させる
ブースティング
バイアスを減少さえる
スタッキング
予測精度を向上させる
母集団から多くの訓練データを得て、各訓練データを用いて別々の予測モデルを構築し、それらの予測を平均することで推定値$ \hat{f}_{avg}(x)を得る
しかしながら通常、複数の訓練データセットを得ることはない
そこで、ブートストラップを用いる
これによりB個の異なるブートストラップ訓練データを用いて、できる
教師あり学習において、一回の学習結果を踏まえて訓練データの重みの調整を行い、ターゲットとする分類機の生成を逐次的に行う
その結果得られるMこの分類器を組み合わせた予測により分類機の精度を向上(集合学習)
よく知られるアルゴリズム
アダブースト、勾配ブースティング、確立勾配ブースティング
参考
精度のあまりよくない分類器を順次繋げることで、全体として精度の高い分類器を出す
弱分類器
強分類器
第一段階
様々なアルゴリズムを用いて、それぞれ学習させい、予測値を出力
第二段階
第一段階の核アルゴリズムの予測値を取りまとめるモデルをメタモデルとする 線形回帰モデルがよく使われる
シンプルだから
第一段階の予測値を特徴量として学習
アンサンブル学習による決定木の改良
決定木におけるバギングの活用
bagging: bootstrap aggregation
RF: Random Forest
決定木におけるブースティング
GBT
分類問題におけるバギングの拡張(最も単純な方法)
ブートストラップ標本からえられたB個のモデルのうちで、最も多く予測されたクラスを全体的な予測とする
→ 決定木:ブートストラップ標本から得られたB個の木によって予測されたクラスを記録し多数決をとる
決定木の利点は、モデル解釈の容易さだった
バギングは結果の解釈のしやすさを犠牲にして、予測精度の向上を行っている
ただ、バギングによってえられた木でも多様性指標から予測変数の重要度を得ることが可能 バギングの木を無相関にするための僅かな調整を行うことでモデルを改良
各決定木を作る際、木を分割するたびにp個の前説明変数から分割の候補として、m個の説明変数がランダムにサンプルとして選ばれる
一般的に、選択する説明変数の数には $ m \approx \sqrt{p}が用いられる
=各分割において考慮する説明変数の数はおよそ全説明変数の平方根
m=pとなる場合はバギングと同等
決定木の分割では多様性指標を大きく減少させる変数がまず選択
したがって、バギングで生成される気は極めて類似した気になり、予測の相関が高くなる
ランダムフォレストではこれを回避
過学習にならない
ランダムフォレストの長所・短所
長所
精度が高い
大きいデータに効率的に作動
…
短所
ブラックボックス的で、単純な木の直観的な決定規則が失われている
予測にノイズが混じる(異常なデータへの過剰適合の危険)
勾配ブースティング決定木
ブースティングアルゴリズムの基本的なアイデア:アダブースト
AdaBoost
よく知られているブースティングのテクニック
弱分類機を組み合わせて、ひとつの強分類器を構築する
Experiments with a New Boosting Algorithm, Freud Schapire
分析手順
最初の学習(m = 1)において、N個のデータのi番目の初期地の重みw1,iを1/Nとして生成する
各データの重みの初期値を初期化
m回目の学習ごとに、N個のデータの重みの更新を繰り返す(m=1, 2, ..., M)
以下の誤差e_mを最小とする分類器$ \hat{y}_i = f_m(x_i)を決定する
クラスはt=(+1, -1)
誤差$ e_m
間違ったら1
分類器fの信頼度αを計算
重みをw_m1. iexp () で更新
正しく分類されている場合は、そのまま更新
誤分類の場合は、重みが増える
M回の学習により生成された分類器の重み付き多数決で結果を出力
正解するやつの重みが大きいので重視される